home *** CD-ROM | disk | FTP | other *** search
Text File | 1989-08-21 | 5.5 KB | 115 lines | [TEXT/pdos] |
- Apple II
- Technical Notes
- _____________________________________________________________________________
- Developer Technical Support
-
-
- GS/OS
- #8: Filenames With More Than CAPS and Numerals
-
- Written by: Matt Deatherage July 1989
-
- This Technical Note discusses the problems some applications may have when
- dealing with filenames containing lowercase letters for the first time.
- _____________________________________________________________________________
-
- With System Software 5.0, lowercase filenames enter GS/OS en masse for the
- first time. Lowercase filenames are inherent to the AppleShare filing system
- and have been added to the ProDOS filing system through the ProDOS FST.
- However, since Apple II filing systems never had lowercase characters in
- filenames before, this change undoubtedly causes problems for some
- applications. This Note gives general guidelines to help developers avoid
- such problems.
-
-
- How the ProDOS FST Does It
-
- "Wait," you say (not for any particular reason, other than a general fondness
- for monosyllables). "If you put lowercase characters in the ProDOS directory
- entry, it's going to cause all kinds of problems. What's gonna' happen on ][+
- machines?"
-
- Two previously unused bytes in each file's directory entry are now used to
- indicate the case of a filename. The bytes are at relative locations +$1C and
- +$1D in each directory entry, and were previously labeled version and
- min_version. Since ProDOS 8 never actually used these bytes for version
- checking (except in one case, discussed below), they are now used to store
- lowercase information. (In the Volume header, bytes +$1A and +$1B are used
- instead.)
-
- If version is read as a word value, bit 7 of min_version would be the highest
- bit (bit 15) of the word. If that bit is set, the remaining 15 bits of the
- word are interpreted as flags that indicate whether the corresponding
- character in the filename is uppercase or lowercase, with set indicating
- lowercase. For example, the filename Desk.Accs has a value in this word of
- $B9C0, or binary 1011 1001 1100 0000. The following illustration shows the
- relationship between the bits and the filename:
-
- Bits in WORD: 1011100111000000
- Filename: Desk.Accs
- Uppercase or Lowercase: ULLLUULLL
-
- Note that the period (.) is considered an uppercase character.
-
-
- What it Means
-
- Because no lowercase ASCII characters are actually stored in the filename
- fields of the directory entries, all ProDOS 8 software should continue to work
- correctly with disks containing files with lowercase characters in the
- filenames. Neither ProDOS 8 nor the ProDOS FST are case sensitive when
- searching for filenames: ProDOS is the same file as PRODOS is the same file
- as prodos.
-
- The main trouble applications have is when a filename has been "processed" by
- the application before passing it to GS/OS. For example, if a command shell
- automatically converts filenames to all uppercase characters before passing
- them to ProDOS 16, the chosen uppercase and lowercase combination for the
- filename will never be seen by the user without any apparent reason. Some
- developers have considered it okay to ignore lowercase considerations,
- thinking that they would only apply to file systems other than ProDOS (and
- file systems which would not be available on the Apple II for a long time, if
- ever). These developers were mistaken.
-
- A more pressing problem is that of an application that is looking for a
- specific file, perhaps a data file or a configuration file. If the
- application simply passes a pathname to GS/OS and asks for that file to be
- opened, it will be opened if it exists. The case of the filename is
- irrelevant since file systems are not case sensitive. However, if the
- application makes GetDirEntry calls on a specific directory, looking for the
- filename in question, there could be trouble: the application won't find the
- file unless its string comparison routine is not case sensitive. If the user
- has renamed the file MyApp.Config, and the string comparison is looking for
- MYAPP.CONFIG, then the application will report that the file does not exist.
-
- It is repeated here that when dealing with normal OS considerations, it's
- almost always better to ask for something and respond intelligently if it's
- not there than it is to go looking for it yourself. The OS already has a lot
- of code to look for things (or expand pathnames, or examine access privileges,
- etc.), and reinventing the wheel is not only tedious, it can be detrimental to
- future compatibility.
-
-
- The One Exception
-
- In the past, ProDOS 8 did look at the version bytes when opening a
- subdirectory. The code to do this has been removed from ProDOS 8 V1.8.
- Please be aware that earlier versions of ProDOS 8 will be unable to scan
- subdirectories with lowercase characters in the directory name, even to find
- files in those directories.
-
-
- Conclusion
-
- Most user-input routines (including the Standard File tool set) return
- filenames or pathnames that can be passed directly to GS/OS without
- preprocessing. Doing so may return "pathname syntax errors" more often than
- not doing so, but it also enables applications to take advantage of future
- versions of the System Software that loosen the restrictions on syntax (or new
- file systems that never had such restrictions). Under GS/OS, even ProDOS
- disks aren't what they used to be.
-
-
- Further Reference
- _____________________________________________________________________________
- o GS/OS Reference